#include<bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
const int N = 2e5 + 10;
#define INF 0x3f3f3f3f;
typedef long long int ll;
#define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
//----------------------------------------------------------------------------//
int n, a[N];
void solve()
{
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> a[i];

    map<int, vector<int>> cnt; //k为数字大小,v为下标
    for(int i = 1; i <= n; i++) cnt[a[i]].push_back(i);

    int ans = 0;
    for(auto[k, v] : cnt)
    {
        for(int j = 0; j < v.size() - 1; j++)//这样遍历就是让两个等值中间也没有等值
        {
            int cur = v[j] + 1; //下标从1开始
            int next = v[j + 1] + 1;
            ans = max(ans, min(cur, next) + min(n - cur, n - next));//第一个min找下标前可以添加多少个,第二个min找下标后可以添加多少个,都是找两者小的        
        }
    }
    if(ans) cout << ans << '\n';
    else cout << -1 << '\n';


}

int main()
{
    close();
    int T;
    cin >> T;
    while (T--) solve();
    return 0;
}
//a[i+t]==a[j+t] i为子数组1的开头,j为子数组2的开头,子数组可以有重叠,1<=t<k